home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / System / VersCheckGUI / src / main.c < prev    next >
C/C++ Source or Header  |  1999-10-19  |  11KB  |  496 lines

  1. /*
  2.  * main ( int argc, char *argv[] )
  3.  *
  4.  * VersCheckGUI
  5.  *
  6.  * Copyright 1999 by Michaela Prüß
  7.  *
  8.  */
  9.  
  10. #include "main.h"
  11.  
  12. int main(int argc, char *argv[])
  13. {
  14.     if (argc==2 && argv[1][0]=='?') {
  15.         PRINT_VERSION;
  16.         exit(0);
  17.     }
  18.  
  19.     if(!verscheck_init())
  20.     {
  21.         verscheck_close();
  22.         return(1L);
  23.     }
  24.  
  25.     IDisplayBorders(ri, win, &verscheck_border_data[0], 0, 0);
  26.     IDisplayGadgets(win,gl);
  27.  
  28.     verscheck_action();
  29.  
  30.     verscheck_close();
  31.  
  32.     return(0L);
  33. }
  34.  
  35. BOOL verscheck_init( void )
  36. {
  37.     if (!(IntuiSupBase = (struct Library*)OpenLibrary(IntuiSupName,IntuiSupVersion)) )
  38.         return FALSE;
  39.  
  40.     if (!(ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) )
  41.         return FALSE;
  42.  
  43.       if (!(win = IOpenWindow(ri, &verscheck_new_window,OPEN_WINDOW_FLAGS)) )
  44.         return FALSE;
  45.  
  46.     if (!(gl = ICreateGadgets(ri,&verscheck_gadget_data[0], 0, 0, NULL)) )
  47.         return FALSE;
  48.  
  49.     verscheck_defaults(0);
  50.  
  51.     return TRUE;
  52. }
  53.  
  54. void verscheck_close( void )
  55. {
  56.     if (gl)                IRemoveGadgets(gl);
  57.     if (gl)                IFreeGadgets(gl);
  58.     if (win)            ICloseWindow(win, FALSE);
  59.     if (ri)                IFreeRenderInfo(ri);
  60.     if (IntuiSupBase)    CloseLibrary(IntuiSupBase);
  61. }
  62.  
  63. void verscheck_action( void )
  64. {
  65.     UBYTE   exestr[512];
  66.     UBYTE   tmpstr[512];
  67.     BOOL    keepon    =TRUE;
  68.     int        start    =0;
  69.     int     libcheck=0;
  70.     int     all        =1;
  71.     int     sysinfo    =1;
  72.     int     fullpath=1;
  73.     int     merge    =0;
  74.     int     noreq    =0;
  75.     int     html    =1;
  76.     int     verbose    =1;
  77.     int     ppc        =0;
  78.     int     images    =0;
  79.  
  80.     do
  81.     {
  82.         struct IntuiMessage  *msg;
  83.  
  84.         WaitPort(win->UserPort);
  85.         while (msg = IGetMsg(win->UserPort))
  86.         {
  87.             ULONG    Class=msg->Class;
  88.             USHORT    Code=msg->Code;
  89.             LONG    IAddress=(LONG)msg->IAddress;
  90.  
  91.             IReplyMsg(msg);
  92.  
  93.             switch(Class)
  94.             {
  95.                 case CLOSEWINDOW:
  96.                     keepon = FALSE;
  97.                     break;
  98.  
  99.                 case ISUP_ID:
  100.                     switch(Code)
  101.                     {
  102.                         case VERSCHECK_GADGET_LIBCHECK:
  103.                             libcheck=IAddress;
  104.                             verscheck_defaults(libcheck);
  105.                             break;
  106.  
  107.                         case VERSCHECK_GADGET_ALL:
  108.                             all=IAddress;
  109.                             break;
  110.  
  111.                         case VERSCHECK_GADGET_SYSINFO:
  112.                             sysinfo=IAddress;
  113.                             break;
  114.  
  115.                         case VERSCHECK_GADGET_FULLPATH:
  116.                             fullpath=IAddress;
  117.                             break;
  118.  
  119.                         case VERSCHECK_GADGET_MERGE:
  120.                             merge=IAddress;
  121.                             break;
  122.  
  123.                         case VERSCHECK_GADGET_NOREQ:
  124.                             noreq=IAddress;
  125.                             break;
  126.  
  127.                         case VERSCHECK_GADGET_HTML:
  128.                             html=IAddress;
  129.                             break;
  130.  
  131.                         case VERSCHECK_GADGET_VERBOSE:
  132.                             verbose=IAddress;
  133.                             break;
  134.  
  135.                         case VERSCHECK_GADGET_POWEREXE:
  136.                             ppc=IAddress;
  137.                             break;
  138.  
  139.                         case VERSCHECK_GADGET_IMAGES:
  140.                             images=IAddress;
  141.                             break;
  142.  
  143.                         case VERSCHECK_GADGET_SUFFIX:
  144.                             sprintf(suffix,"%s",(char *)IAddress);
  145.                             break;
  146.  
  147.                         case VERSCHECK_GADGET_LIST:
  148.                             sprintf(chklst,"%s",(char *)IAddress);
  149.                             break;
  150.  
  151.                         case VERSCHECK_GADGET_OUTFILE:
  152.                             sprintf(ofname,"%s",(char *)IAddress);
  153.                             break;
  154.  
  155.                         case VERSCHECK_GADGET_FILEDIR:
  156.                             sprintf(dirnam,"%s",(char *)IAddress);
  157.                             break;
  158.  
  159.                         case VERSCHECK_GADGET_START:
  160.                             keepon=FALSE;
  161.                             start=1;        /* start ONE check */
  162.                             break;
  163.  
  164.                         case VERSCHECK_GADGET_STARTALL:
  165.                             keepon=FALSE;
  166.                             libcheck=0;
  167.                             start=2;        /* start ALL checks */
  168.                             break;
  169.  
  170.                     }
  171.             }
  172.         }
  173.     } while (keepon == TRUE);
  174.  
  175.     while(start)
  176.     {
  177.         if (start==2)
  178.         {
  179.             verscheck_defaults(libcheck);
  180.             sysinfo=1;
  181.             images=0;
  182.             noreq=1;
  183.         }
  184.  
  185.         strcpy(exestr,"VersCheck ");
  186.         switch(libcheck)
  187.         {
  188.             case 1:
  189.                 strcat(exestr,"-2 ");
  190.                 break;
  191.             case 2:
  192.                 strcat(exestr,"-3 ");
  193.                 break;
  194.             case 3:
  195.                 strcat(exestr,"-4 ");
  196.                 break;
  197.             case 4:
  198.                 strcat(exestr,"-5 ");
  199.                 break;
  200.             case 5:
  201.             case 6:
  202.             case 7:
  203.             case 8:
  204.             case 9:
  205.                 sprintf(tmpstr, "-0s %s -0l %s -0n %s ", suffix, chklst, ofname);
  206.                 strcat(exestr,tmpstr);
  207.                 strcpy(dirnam,"Sys:Classes");
  208.                 merge=2;
  209.                 sysinfo=0;
  210.                 break;
  211.             case 10:
  212.                 break;
  213.             default:
  214.                 strcat(exestr,"-1 ");
  215.                 break;
  216.         }
  217.  
  218.         if (all)        strcat(exestr,"-a ");
  219.         if (sysinfo)    strcat(exestr,"-s ");
  220.         if (fullpath)    strcat(exestr,"-f ");
  221.         if (merge)        strcat(exestr,"-m ");
  222.         if (noreq)        strcat(exestr,"-n ");
  223.         if (html)        strcat(exestr,"-o ");
  224.         if (verbose)    strcat(exestr,"-v ");
  225.  
  226.         switch(ppc)
  227.         {
  228.             case 1:
  229.                 strcat(exestr,"-x1 ");
  230.                 break;
  231.             case 2:
  232.                 strcat(exestr,"-x2 ");
  233.                 break;
  234.             case 3:
  235.                 strcat(exestr,"-x3 ");
  236.                 break;
  237.             default:
  238.                 break;
  239.         }
  240.  
  241.         switch(images)
  242.         {
  243.             case 1:
  244.                 strcat(exestr,"-p ");
  245.                 break;
  246.             case 2:
  247.                 strcat(exestr,"-P ");
  248.                 break;
  249.             default:
  250.                 break;
  251.         }
  252.         if (merge==2)
  253.         {
  254.             sprintf(tmpstr,"%s -s MUI: >CON:0/0/640/250/VersCheckGUI",exestr);
  255.             Execute(tmpstr,0L,0L);
  256.         }
  257.         sprintf(tmpstr,"\"%s\"",dirnam);    /* make shure that blank in filename will work */
  258.         strcat(exestr,tmpstr);
  259.         strcat(exestr," >CON:0/0/640/250/VersCheckGUI");
  260.         Execute(exestr,0L,0L);
  261.  
  262.         if (start==1) break;
  263.  
  264.         libcheck++;
  265.         if (libcheck>9) start=0;
  266.     };
  267. }
  268.  
  269. void verscheck_set_gadgets(int check)
  270. {
  271.     if (check<3)
  272.     {
  273.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_HTML,
  274.             GADGET_DATA_FLAG_DISABLED, 0,
  275.             USE_CURRENT_VALUE, 1,
  276.             (void *) USE_CURRENT_VALUE);
  277.     }
  278.     else
  279.     {
  280.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_HTML,
  281.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  282.             USE_CURRENT_VALUE, 0,
  283.             (void *) USE_CURRENT_VALUE);
  284.     }
  285.  
  286.     if (check<5)
  287.     {
  288.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
  289.             GADGET_DATA_FLAG_DISABLED, 0,
  290.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  291.             (void *) USE_CURRENT_VALUE);
  292.  
  293.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
  294.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  295.             USE_CURRENT_VALUE, 0,
  296.             (void *) USE_CURRENT_VALUE);
  297.  
  298.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
  299.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  300.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  301.             suffix);
  302.  
  303.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
  304.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  305.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  306.             chklst);
  307.  
  308.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
  309.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  310.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  311.             ofname);
  312.  
  313.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
  314.             GADGET_DATA_FLAG_DISABLED, 0,
  315.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  316.             dirnam);
  317.     }
  318.     else if (check>4 && check<10)
  319.     {
  320.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
  321.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  322.             USE_CURRENT_VALUE, 1,
  323.             (void *) USE_CURRENT_VALUE);
  324.  
  325.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
  326.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  327.             USE_CURRENT_VALUE, 0,
  328.             (void *) USE_CURRENT_VALUE);
  329.  
  330.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
  331.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  332.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  333.             suffix);
  334.  
  335.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
  336.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  337.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  338.             chklst);
  339.  
  340.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
  341.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  342.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  343.             ofname);
  344.  
  345.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
  346.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  347.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  348.             dirnam);
  349.     }
  350.     else if (check==10)
  351.     {
  352.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
  353.             GADGET_DATA_FLAG_DISABLED, 0,
  354.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  355.             (void *) USE_CURRENT_VALUE);
  356.  
  357.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
  358.             GADGET_DATA_FLAG_DISABLED, 0,
  359.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  360.             (void *) USE_CURRENT_VALUE);
  361.  
  362.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
  363.             GADGET_DATA_FLAG_DISABLED, 0,
  364.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  365.             suffix);
  366.  
  367.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
  368.             GADGET_DATA_FLAG_DISABLED, 0,
  369.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  370.             chklst);
  371.  
  372.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
  373.             GADGET_DATA_FLAG_DISABLED, 0,
  374.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  375.             ofname);
  376.  
  377.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
  378.             GADGET_DATA_FLAG_DISABLED, 0,
  379.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  380.             dirnam);
  381.     }
  382.     else if (check>10)
  383.     {
  384.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
  385.             GADGET_DATA_FLAG_DISABLED, 0,
  386.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  387.             (void *) USE_CURRENT_VALUE);
  388.  
  389.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
  390.             GADGET_DATA_FLAG_DISABLED, 0,
  391.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  392.             (void *) USE_CURRENT_VALUE);
  393.  
  394.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
  395.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  396.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  397.             suffix);
  398.  
  399.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
  400.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  401.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  402.             chklst);
  403.  
  404.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
  405.             GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
  406.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  407.             ofname);
  408.  
  409.         ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
  410.             GADGET_DATA_FLAG_DISABLED, 0,
  411.             USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  412.             dirnam);
  413.     }
  414. }
  415.  
  416. void verscheck_defaults(int check)
  417. {
  418.  
  419.     switch(check)
  420.     {
  421.         case 1:
  422.             strcpy(suffix,"<intern>");
  423.             strcpy(chklst,"<intern>");
  424.             strcpy(ofname,"<intern>");
  425.             strcpy(dirnam,"Devs:");
  426.             break;
  427.         case 2:
  428.             strcpy(suffix,"<intern>");
  429.             strcpy(chklst,"<intern>");
  430.             strcpy(ofname,"<intern>");
  431.             strcpy(dirnam,"Sys:Classes/Datatypes");
  432.             break;
  433.         case 3:
  434.             strcpy(suffix,"<intern>");
  435.             strcpy(chklst,"<intern>");
  436.             strcpy(ofname,"<intern>");
  437.             strcpy(dirnam,"MUI:Libs/MUI");
  438.             break;
  439.         case 4:
  440.             strcpy(suffix,"<intern>");
  441.             strcpy(chklst,"<intern>");
  442.             strcpy(ofname,"<intern>");
  443.             strcpy(dirnam,"l:");
  444.             break;
  445.         case 5:
  446.             strcpy(suffix,".class");
  447.             strcpy(chklst,"ClassList");
  448.             strcpy(ofname,"CLASS");
  449.             strcpy(dirnam,"<intern>");
  450.             break;
  451.         case 6:
  452.             strcpy(suffix,".image");
  453.             strcpy(chklst,"ImageList");
  454.             strcpy(ofname,"CLASSIMG");
  455.             strcpy(dirnam,"<intern>");
  456.             break;
  457.         case 7:
  458.             strcpy(suffix,".gadget");
  459.             strcpy(chklst,"GadgetList");
  460.             strcpy(ofname,"CLASSGAD");
  461.             strcpy(dirnam,"<intern>");
  462.             break;
  463.         case 8:
  464.             strcpy(suffix,".codec");
  465.             strcpy(chklst,"CodecList");
  466.             strcpy(ofname,"CLASSCOD");
  467.             strcpy(dirnam,"<intern>");
  468.             break;
  469.         case 9:
  470.             strcpy(suffix,".decoder");
  471.             strcpy(chklst,"DecoderList");
  472.             strcpy(ofname,"CLASSDEC");
  473.             strcpy(dirnam,"<intern>");
  474.             break;
  475.         case 10:
  476.             strcpy(suffix,"");
  477.             strcpy(chklst,"");
  478.             strcpy(ofname,"");
  479.             strcpy(dirnam,"");
  480.             break;
  481.         case 11:
  482.             strcpy(suffix,"<OFF>");
  483.             strcpy(chklst,"<OFF>");
  484.             strcpy(ofname,"<OFF>");
  485.             strcpy(dirnam,"c:");
  486.             break;
  487.         default:
  488.             strcpy(suffix,"<intern>");
  489.             strcpy(chklst,"<intern>");
  490.             strcpy(ofname,"<intern>");
  491.             strcpy(dirnam,"Libs:");
  492.             break;
  493.     }
  494.     verscheck_set_gadgets(check);
  495. }
  496.